package com.ttg.utils;

//~--- JDK imports ------------------------------------------------------------

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

//~--- classes ----------------------------------------------------------------

/**
 * Class DataUtil
 * Description
 * Create 2016-02-25 01:28:06 
 * @author Ardy    
 */
public class DataUtil {

    /**
     * Method convertNumber 
     * Description 说明：
     *
     * @param data 说明：
     * @param pattern 说明：
     *
     * @return 返回值说明：
     */
    public static String convertNumber(int data, String pattern) {
        DecimalFormat df = new DecimalFormat(pattern);

        return df.format(data);
    }

    /**
     * Method convertNumber 
     * Description 说明：
     *
     * @param data 说明：
     * @param pattern 说明：
     *
     * @return 返回值说明：
     */
    public static String convertNumber(Double data, String pattern) {
        DecimalFormat df = new DecimalFormat(pattern);

        return df.format(data);
    }

    /**
     * Method convertMapToHttpParams 
     * Description 说明：
     *
     * @param map 说明：
     *
     * @return 返回值说明：
     */
    public static String convertMapToHttpParams(Map<String, ?> map) {
        StringBuffer stringBuffer = new StringBuffer();
        String       prefix       = "";

        for (String key : map.keySet()) {
            stringBuffer.append(prefix);
            prefix = "&";
            stringBuffer.append(key).append("=").append(map.get(key));
        }

        return stringBuffer.toString();
    }

    /**
     * Method convertMapToHttpParamsQ 
     * Description 说明：
     *
     * @param map 说明：
     *
     * @return 返回值说明：
     */
    public static String convertMapToHttpParamsQ(Map<String, ?> map) {
        StringBuffer stringBuffer = new StringBuffer();
        String       prefix       = "";

        for (String key : map.keySet()) {
            stringBuffer.append(prefix);
            prefix = "&";
            stringBuffer.append(key).append("=").append("\"").append(map.get(key)).append("\"");
        }

        return stringBuffer.toString();
    }

    /**
     * Method convertHttpParamsToMap 
     * Description 说明：
     *
     * @param param 说明：
     *
     * @return 返回值说明：
     */
    public static Map<String, String> convertHttpParamsToMap(String param) {
        Map      map = new HashMap();
        String[] str = param.split("&");

        // 如果参数解析出来的数组存在
        if (( str != null ) && ( str.length != 0 )) {
            for (String strings : str) {
                String[] keyValue = strings.split("=");

                if (( keyValue != null ) && ( keyValue.length == 2 )) {
                    map.put(keyValue[0], keyValue[1]);
                }
            }
        }

        return map;
    }

    /**
     * Method convertStrToDouble 
     * Description 说明：
     *
     * @param str 说明：
     *
     * @return 返回值说明：
     */
    public static double convertStrToDouble(String str) {
        BigDecimal b = new BigDecimal(str);
        BigDecimal f = b.setScale(2, BigDecimal.ROUND_HALF_UP);

        return f.doubleValue();
    }

    /**
     * Method main 
     * Description 说明：
     *
     * @param args 说明：
     */
    public static void main(String[] args) {
        String s = "0.01";

        System.out.println("args = [" + convertNumber(0.1, "000000000000") + "]");
        System.out.println(convertStrToDouble(s));
    }

    /**
     * Method isEmpty 
     * Description 说明：
     *
     * @param obj 说明：
     *
     * @return 返回值说明：
     */
    public static boolean isEmpty(Object obj) {
        if (obj == null) {
            return true;
        } else if (obj instanceof String) {
            if ("".equals(obj)) {
                return true;
            }
        } else if (obj instanceof Collection<?>) {
            return ( (Collection) obj ).isEmpty();
        }

        return false;
    }

    /**
     * Method parseMapToBean 
     * Description 说明：
     *
     * @param map 说明：
     * @param clazz 说明：
     * @param <T> 说明：
     *
     * @return 返回值说明：
     *
     * @throws Exception 异常：
     */
    public static <T> Object parseMapToBean(Map<String, String> map, Class<T> clazz) throws Exception {
        Object bean = clazz.newInstance();

        try {
            Field[] e    = clazz.getDeclaredFields();
            Field[] var4 = e;
            int     var5 = e.length;

            for (int var6 = 0 ; var6 < var5 ; ++var6) {
                Field  f             = var4[var6];
                String fieldName     = f.getName();
                String fieldValue    = map.get(fieldName);
                String strLetter     = fieldName.substring(0, 1).toUpperCase();
                String setMethodName = "set" + strLetter + fieldName.substring(1);
                Method setMethod     = clazz.getMethod(setMethodName, String.class);

                setMethod.invoke(bean, fieldValue);
            }

            return bean;
        } catch (Exception var13) {
            var13.printStackTrace();

            throw new Exception("【解析Map转换成交易结果对象】对象转换时出现异常!", var13);
        }
    }
}


//~ Formatted by Jindent --- http://www.jindent.com
